home *** CD-ROM | disk | FTP | other *** search
/ Aminet 3 / Aminet 3 - July 1994.iso / Aminet / dev / e / capus.lha / ToolAppIcon / TMAppIc.e < prev    next >
Encoding:
Text File  |  1994-05-02  |  38.2 KB  |  852 lines

  1. /********************************************************************************
  2.  * << AUTO HEADER XDME >>
  3.  ********************************************************************************
  4.  ED          "EDG"
  5.  EC          "EC"
  6.  PREPRO      "EPP"
  7.  SOURCE      "TMAppIc.e"
  8.  EPPDEST     "TMA_EPP.e"
  9.  EXEC        "TMAppIc"
  10.  ISOURCE     "TM.i"
  11.  HSOURCE     " "
  12.  ERROREC     " "
  13.  ERROREPP    " "
  14.  VERSION     "0"
  15.  REVISION    "1"
  16.  NAMEPRG     "TMAppIc"
  17.  NAMEAUTHOR  "NasGûl"
  18.  ********************************************************************************
  19.  * HISTORY :
  20.  *******************************************************************************/
  21.  
  22. OPT OSVERSION=37
  23. OPT LARGE
  24.  
  25. CONST DEBUG=FALSE
  26.  
  27. CONST ID_TMAP=$544D4150,
  28.       ID_EXEC=$45584543,
  29.       ID_MODE=$4D4F4445,
  30.       ID_COMM=$434F4D4D,
  31.       ID_HKEY=$484B4559,
  32.       ID_STAK=$5354414B,
  33.       ID_PRIO=$5052494F,
  34.       ID_DELA=$44454C41,
  35.       ID_CDIR=$43444952,
  36.       ID_PATH=$50415448,
  37.       ID_OUTP=$4F555450,
  38.       ID_PSCR=$50534352,
  39.       ID_ARGS=$41524753,
  40.       ID_TOFR=$544F4652,
  41.       ID_FILE=$46494C45,
  42.       ID_POSX=$504F5358,
  43.       ID_POSY=$504F5359,
  44.       ID_SHNA=$53484E41,
  45.       LIST_REMOVE=0,
  46.       LIST_CLEAN=1,
  47.       DIM_X=0,
  48.       DIM_Y=1
  49.  
  50. ENUM GAD_NAME,GAD_EXECTYPE,GAD_GETCOMMAND,
  51.      GAD_COMMAND,GAD_HOTKEY,GAD_STACK,GAD_PRIORITY,
  52.      GAD_DELAY,GAD_CURRENTDIR,GAD_GETPATH,GA_PATH,
  53.      GAD_GETOUTPUT,GAD_OUTPUT,GAD_GETPUBSCREEN,
  54.      GAD_PUBSCREEN,GAD_ARGUMENTS,GAD_TOFRONT,
  55.      GAD_ADD,GAD_REM,GAD_FILE,GAD_GETFILE,
  56.      GAD_POSITION,GAD_POSX,GAD_POSY,
  57.      GAD_SHOWNAME,GAD_SAVE,GAD_SAVEAS,
  58.      GAD_USE,GAD_TEST,GAD_QUIT,GAD_GETCURRENTDIR,GAD_LIST
  59.  
  60. ENUM ER_NONE,
  61.      ER_WB,ER_VISUAL,ER_CONTEXT,ER_MENU,ER_GADGET,ER_WINDOW,
  62.      ER_TMHANDLE,
  63.      ER_LIST,
  64.      ER_EXECOBJ,
  65.      ER_IMAGEOBJ,
  66.      ER_ICONOBJ,
  67.      ER_PORT,
  68.      ER_REQ,
  69.      ER_SIG,
  70.      ER_NOFILE,ER_APPITEM,ER_FORMAT,OK_FICHIER,
  71.      ER_NOTM
  72.  
  73. MODULE 'intuition/intuition'
  74. MODULE 'gadtools','libraries/gadtools'
  75. MODULE 'intuition/gadgetclass','intuition/screens','graphics/text'
  76. MODULE 'exec/lists','exec/nodes','utility/tagitem','exec/ports'
  77. MODULE 'libraries/toolmanager','toolmanager','eropenlib','reqtools','libraries/reqtools','wb'
  78. MODULE 'workbench/workbench','mheader'
  79. PMODULE 'pmodules:pmheader'
  80. PMODULE 'pmodules:dwritef'
  81. PMODULE 'TM_InitRem'
  82. PMODULE 'TM_List'
  83. /* DEFINITION GENERALES */
  84. DEF execw_screen:PTR TO screen,
  85.     execw_visual=NIL,
  86.     execw_window=NIL:PTR TO window,
  87.     execw_glist=NIL
  88. /** GADGETLABELS **/
  89. DEF g_name,g_exectype,g_getcommand,g_command,g_hotkey,
  90.     g_stack,g_priority,g_delay,g_currentdir,g_getpath,
  91.     g_path,g_getoutput,g_output,g_getpubscreen,
  92.     g_pubscreen,g_arguments,g_tofront,g_add,
  93.     g_rem,g_file,g_getfile,g_position,
  94.     g_posx,g_posy,g_showname,g_save,
  95.     g_saveas,g_use,g_test,g_quit,g_getcurrentdir,g_list
  96. DEF tattr
  97. DEF nofile=FALSE
  98. DEF reelquit=FALSE  /* flags quit */
  99. DEF tm_h:PTR TO tmhandle
  100. DEF prgport:PTR TO mp
  101. DEF prgsig=-1
  102. DEF list_appicon:PTR TO lh
  103. DEF list_empty:PTR TO LONG
  104. DEF currentnode
  105. DEF appitem
  106. DEF winpos=NIL:PTR TO window
  107. PROC tm_GoodFormat(file) HANDLE /*"tm_GoodFormat(file)"*/
  108.     DEF len,buf,handle,flen=TRUE,chunk
  109.     IF (flen:=FileLength(file))=-1 THEN Raise(FALSE)
  110.     IF (buf:=New(flen+1))=NIL THEN Raise(FALSE)
  111.     IF (handle:=Open(file,1005))=NIL THEN Raise(FALSE)
  112.     len:=Read(handle,buf,flen)
  113.     Close(handle)
  114.     IF len<1 THEN Raise(FALSE)
  115.     chunk:=Long(buf)
  116.     IF chunk<>ID_TMAP
  117.         tm_Request('ce n\aest pas un fichier TMAppIc.','_Ok',NIL)
  118.         Dispose(buf)
  119.         Raise(FALSE)
  120.     ENDIF
  121.     Raise(TRUE)
  122. EXCEPT
  123.     IF buf THEN Dispose(buf)
  124.     dWriteF(['tm_GoodFormat() \d\n'],[exception])
  125.     RETURN exception
  126. ENDPROC
  127. PROC tm_ReadBINFile(mode) /*"tm_ReadBINFile(mode)"*/
  128.     DEF len,a,adr,buf,handle,flen=TRUE,pos
  129.     DEF f_s[256]:STRING,chunk
  130.     DEF myappic:PTR TO appiconnode
  131.     DEF node:PTR TO ln
  132.     DEF nn
  133.     DEF pv[256]:STRING
  134.     /*****************************************/
  135.     /* Stockage du fichier source dans buf   */
  136.     /*****************************************/
  137.     IF mode=NIL
  138.         IF (flen:=FileLength('Env:TMAppIc.prefs'))<>-1
  139.             StrCopy(f_s,'ENV:TMAppIc.Prefs',ALL)
  140.             nofile:=FALSE
  141.         ELSE
  142.             IF (flen:=FileLength('Envarc:TMAppIc.Prefs'))<>-1
  143.                 StrCopy(f_s,'Envarc:TMAppIc.Prefs',ALL)
  144.                 nofile:=FALSE
  145.             ELSE
  146.                 nofile:=TRUE
  147.             ENDIF
  148.         ENDIF
  149.     ELSE
  150.         StrCopy(f_s,mode,ALL)
  151.         IF (flen:=FileLength(f_s))=-1 THEN RETURN ER_NOFILE
  152.         nofile:=FALSE
  153.     ENDIF
  154.     IF nofile=TRUE THEN RETURN TRUE
  155.     IF (buf:=New(flen+1))=NIL THEN RETURN ER_NOFILE
  156.     IF (handle:=Open(f_s,1005))=NIL THEN RETURN ER_NOFILE
  157.     len:=Read(handle,buf,flen)
  158.     Close(handle)
  159.     IF len<1 THEN RETURN ER_NOFILE
  160.     adr:=buf
  161.     chunk:=Long(adr)
  162.     IF chunk<>ID_TMAP
  163.         tm_Request('ce n\aest pas un fichier TMAppIc.','_Ok',NIL)
  164.         Dispose(buf)
  165.         RETURN ER_FORMAT
  166.     ENDIF
  167.     /***********/
  168.     /* Lecture */
  169.     /***********/
  170.     FOR a:=0 TO len-1
  171.         pos:=adr++
  172.         chunk:=Long(pos)
  173.         SELECT chunk
  174.             CASE ID_EXEC
  175.                 node:=New(SIZEOF ln)
  176.                 myappic:=New(SIZEOF appiconnode)
  177.                 node.succ:=0
  178.                 StringF(pv,'\s',pos+4)
  179.                 node.name:=String(EstrLen(pv))
  180.                 StrCopy(node.name,pv,ALL)
  181.                 CopyMem(node,myappic.node,SIZEOF ln)
  182.                 AddTail(list_appicon,myappic.node)
  183.                 nn:=p_GetNumNode(list_appicon,myappic.node)
  184.                 IF nn=0
  185.                     list_appicon.head:=myappic.node
  186.                     node.pred:=0
  187.                 ENDIF
  188.             CASE ID_MODE
  189.                 myappic.exectype:=Int(pos+4)
  190.             CASE ID_COMM
  191.                 StringF(pv,'\s',pos+4)
  192.                 myappic.command:=String(EstrLen(pv))
  193.                 StrCopy(myappic.command,pv,ALL)
  194.             CASE ID_HKEY
  195.                 StringF(pv,'\s',pos+4)
  196.                 myappic.hotkey:=String(EstrLen(pv))
  197.                 StrCopy(myappic.hotkey,pv,ALL)
  198.             CASE ID_STAK
  199.                myappic.stack:=Long(pos+4)
  200.             CASE ID_PRIO
  201.                myappic.priority:=Int(pos+4)
  202.             CASE ID_DELA
  203.                myappic.delay:=Int(pos+4)
  204.             CASE ID_CDIR
  205.                 StringF(pv,'\s',pos+4)
  206.                 myappic.currentdir:=String(EstrLen(pv))
  207.                 StrCopy(myappic.currentdir,pv,ALL)
  208.             CASE ID_PATH
  209.                 StringF(pv,'\s',pos+4)
  210.                 myappic.path:=String(EstrLen(pv))
  211.                 StrCopy(myappic.path,pv,ALL)
  212.             CASE ID_OUTP
  213.                 StringF(pv,'\s',pos+4)
  214.                 myappic.output:=String(EstrLen(pv))
  215.                 StrCopy(myappic.output,pv,ALL)
  216.             CASE ID_PSCR
  217.                 StringF(pv,'\s',pos+4)
  218.                 myappic.pubscreen:=String(EstrLen(pv))
  219.                 StrCopy(myappic.pubscreen,pv,ALL)
  220.             CASE ID_ARGS
  221.                 myappic.arguments:=Char(pos+4)
  222.             CASE ID_TOFR
  223.                 myappic.tofront:=Char(pos+4)
  224.             CASE ID_FILE
  225.                 StringF(pv,'\s',pos+4)
  226.                 myappic.file:=String(EstrLen(pv))
  227.                 StrCopy(myappic.file,pv,ALL)
  228.             CASE ID_POSX
  229.                 myappic.posx:=Int(pos+4)
  230.             CASE ID_POSY
  231.                 myappic.posy:=Int(pos+4)
  232.             CASE ID_SHNA
  233.                 myappic.showname:=Char(pos+4)
  234.                 IF node THEN Dispose(node)
  235.         ENDSELECT
  236.     ENDFOR
  237.     Dispose(buf)
  238.     dWriteF(['tm_ReadBINFile() ok\n'],0)
  239.     RETURN OK_FICHIER
  240. ENDPROC
  241. PROC tm_RemMainWindow() /*"tm_RemMainWindow()"*/
  242.     dWriteF(['tm_RemMainWindow()\n'],0)
  243.     IF execw_visual THEN FreeVisualInfo(execw_visual)
  244.     IF execw_window THEN CloseWindow(execw_window)
  245.     IF execw_glist THEN FreeGadgets(execw_glist)
  246.     IF execw_screen THEN UnlockPubScreen(execw_screen,NIL)
  247. ENDPROC
  248. PROC tm_OpenMainWindow() HANDLE /*"tm_OpenMainWindow()"*/
  249.     IF (execw_window:=OpenW(4,12,634,210,$278,$100E,title_req,NIL,1,execw_glist))=NIL THEN Raise(ER_WINDOW)
  250.     DrawBevelBoxA(execw_window.rport,9,181,335,25,[GT_VISUALINFO,execw_visual,TAG_DONE,0])
  251.     DrawBevelBoxA(execw_window.rport,352,13,269,62,[GT_VISUALINFO,execw_visual,TAG_DONE,0])
  252.     DrawBevelBoxA(execw_window.rport,352,110,269,96,[GT_VISUALINFO,execw_visual,TAG_DONE,0])
  253.     DrawBevelBoxA(execw_window.rport,9,13,335,166,[GT_VISUALINFO,execw_visual,TAG_DONE,0])
  254.     RefreshGList(g_name,execw_window,NIL,-1)
  255.     Gt_SetGadgetAttrsA(g_list,execw_window,NIL,[GTLV_SHOWSELECTED,TRUE,GTLV_TOP,0,GTLV_SELECTED,0,GTLV_LABELS,p_EmptyList(list_appicon),0])
  256.     IF p_EmptyList(list_appicon)=-1 THEN tm_RebuildGadgets(-1) ELSE tm_RebuildGadgets(0)
  257.     Gt_RefreshWindow(execw_window,NIL)
  258.     Raise(ER_NONE)
  259. EXCEPT
  260.     dWriteF(['tm_OpenMainWindow() \d\n'],[exception])
  261.     RETURN exception
  262. ENDPROC
  263. PROC tm_CloseWindow(wnd:PTR TO window) /*"tm_CloseWindow(wnd:PTR TO window)"*/
  264.     DEF mes:PTR TO intuimessage
  265.     Forbid()
  266.     WHILE mes:=Gt_GetIMsg(wnd.userport) DO Gt_ReplyIMsg(mes)
  267.     IF wnd THEN CloseWindow(wnd)
  268.     wnd:=NIL
  269.     Permit()
  270.     dWriteF(['tm_CloseWindow() \d\n'],[wnd])
  271.     RETURN wnd
  272. ENDPROC
  273. PROC tm_BuildTMObject(list:PTR TO lh) HANDLE /*"tm_BuildTMObject(list:PTR TO lh)"*/
  274.     DEF node:PTR TO ln
  275.     DEF mappic:PTR TO appiconnode
  276.     mappic:=list.head
  277.     WHILE mappic
  278.         node:=mappic
  279.         IF node.succ<>0
  280.             IF (CreateTMObjectTagList(tm_h,node.name,TMOBJTYPE_EXEC,
  281.                                   [TMOP_EXECTYPE,mappic.exectype,
  282.                                    TMOP_COMMAND,mappic.command,
  283.                                    TMOP_HOTKEY,mappic.hotkey,
  284.                                    TMOP_STACK,mappic.stack,
  285.                                    TMOP_PRIORITY,mappic.priority,
  286.                                    TMOP_DELAY,mappic.delay,
  287.                                    TMOP_CURRENTDIR,mappic.currentdir,
  288.                                    TMOP_PATH,mappic.path,
  289.                                    TMOP_OUTPUT,mappic.output,
  290.                                    TMOP_PUBSCREEN,mappic.pubscreen,
  291.                                    TMOP_ARGUMENTS,mappic.arguments,
  292.                                    TMOP_TOFRONT,mappic.tofront,TAG_DONE,0]))=NIL THEN Raise(ER_EXECOBJ)
  293.             IF (CreateTMObjectTagList(tm_h,node.name,TMOBJTYPE_IMAGE,
  294.                                   [TMOP_FILE,mappic.file,
  295.                                    TAG_DONE,0]))=NIL THEN Raise(ER_IMAGEOBJ)
  296.             IF (CreateTMObjectTagList(tm_h,node.name,TMOBJTYPE_ICON,
  297.                                             [TMOP_EXEC,node.name,
  298.                                              TMOP_IMAGE,node.name,
  299.                                              TMOP_SOUND,NIL,
  300.                                              TMOP_LEFTEDGE,mappic.posx,
  301.                                              TMOP_TOPEDGE,mappic.posy,
  302.                                              TMOP_SHOWNAME,mappic.showname,
  303.                                              TAG_DONE,0]))=NIL THEN Raise(ER_ICONOBJ)
  304.         ENDIF
  305.         mappic:=node.succ
  306.     ENDWHILE
  307.     Raise(ER_NONE)
  308. EXCEPT
  309.     IF exception<>ER_NONE
  310.         SELECT exception
  311.             CASE ER_EXECOBJ;   tm_Request('Erreur de création : \s (Objet Exec) .','_Ok',[node.name])
  312.             CASE ER_IMAGEOBJ;  tm_Request('Erreur de création : \s (Objet Image).','_Ok',[node.name])
  313.             CASE ER_ICONOBJ;   tm_Request('Erreur de création : \s (objet Icon).','_Ok',[node.name])
  314.         ENDSELECT
  315.     ENDIF
  316.     dWriteF(['tm_BuidTMObject() \d\n'],[exception])
  317.     RETURN exception
  318. ENDPROC
  319. PROC tm_RebuildGadgets(numnode) /*"tm_RebuildGadgets(numnode)"*/
  320.     DEF mya:PTR TO appiconnode
  321.     DEF node:PTR TO ln
  322.     DEF s_stack[20]:STRING
  323.     DEF s_pri[20]:STRING
  324.     DEF s_delay[20]:STRING
  325.     DEF s_posx[20]:STRING
  326.     DEF s_posy[20]:STRING
  327.     IF numnode<>-1
  328.         mya:=p_GetAdrNode(list_appicon,numnode)
  329.         node:=mya
  330.         /* NAME */
  331.         Gt_SetGadgetAttrsA(g_name,execw_window,NIL,[GA_DISABLED,FALSE,GTST_STRING,node.name,TAG_DONE,0])
  332.         /* EXECTYPE */
  333.         Gt_SetGadgetAttrsA(g_exectype,execw_window,NIL,[GA_DISABLED,FALSE,GTCY_ACTIVE,mya.exectype,TAG_DONE,0])
  334.         /* COMMAND */
  335.         Gt_SetGadgetAttrsA(g_command,execw_window,NIL,[GA_DISABLED,FALSE,GTST_STRING,mya.command,TAG_DONE,0])
  336.         /* HOTKEY */
  337.         Gt_SetGadgetAttrsA(g_hotkey,execw_window,NIL,[GA_DISABLED,FALSE,GTST_STRING,mya.hotkey,TAG_DONE,0])
  338.         /* STACK  */
  339.         StringF(s_stack,'\d',mya.stack)
  340.         Gt_SetGadgetAttrsA(g_stack,execw_window,NIL,[GA_DISABLED,FALSE,GTST_STRING,s_stack,TAG_DONE,0])
  341.         /* PRI */
  342.         StringF(s_pri,'\d',mya.priority)
  343.         Gt_SetGadgetAttrsA(g_priority,execw_window,NIL,[GA_DISABLED,FALSE,GTST_STRING,s_pri,TAG_DONE,0])
  344.         /* DELAY */
  345.         StringF(s_delay,'\d',mya.delay)
  346.         Gt_SetGadgetAttrsA(g_delay,execw_window,NIL,[GA_DISABLED,FALSE,GTST_STRING,s_delay,TAG_DONE,0])
  347.         /* CURRENTDIR */
  348.         Gt_SetGadgetAttrsA(g_currentdir,execw_window,NIL,[GA_DISABLED,FALSE,GTST_STRING,mya.currentdir,TAG_DONE,0])
  349.         /* PATH */
  350.         Gt_SetGadgetAttrsA(g_path,execw_window,NIL,[GA_DISABLED,FALSE,GTST_STRING,mya.path,TAG_DONE,0])
  351.         /* OUTPUT */
  352.         Gt_SetGadgetAttrsA(g_output,execw_window,NIL,[GA_DISABLED,FALSE,GTST_STRING,mya.output,TAG_DONE,0])
  353.         /* PUBSCREEN */
  354.         Gt_SetGadgetAttrsA(g_pubscreen,execw_window,NIL,[GA_DISABLED,FALSE,GTST_STRING,mya.pubscreen,TAG_DONE,0])
  355.         /* ARGUMENTS */
  356.         Gt_SetGadgetAttrsA(g_arguments,execw_window,NIL,[GA_DISABLED,FALSE,GTCB_CHECKED,mya.arguments,TAG_DONE,0])
  357.         /* TOFRONT */
  358.         Gt_SetGadgetAttrsA(g_tofront,execw_window,NIL,[GA_DISABLED,FALSE,GTCB_CHECKED,mya.tofront,TAG_DONE,0])
  359.         /* FILE */
  360.         Gt_SetGadgetAttrsA(g_file,execw_window,NIL,[GA_DISABLED,FALSE,GTST_STRING,mya.file,TAG_DONE,0])
  361.         /* GETCOMMAND */
  362.         Gt_SetGadgetAttrsA(g_getcommand,execw_window,NIL,[GA_DISABLED,FALSE,TAG_DONE,0])
  363.         /* GETCURRENTDIR */
  364.         Gt_SetGadgetAttrsA(g_getcurrentdir,execw_window,NIL,[GA_DISABLED,FALSE,TAG_DONE,0])
  365.         /* GETPATH */
  366.         Gt_SetGadgetAttrsA(g_getpath,execw_window,NIL,[GA_DISABLED,FALSE,TAG_DONE,0])
  367.         /* GETOUTPUT */
  368.         Gt_SetGadgetAttrsA(g_getoutput,execw_window,NIL,[GA_DISABLED,FALSE,TAG_DONE,0])
  369.         /* GETPUBSCREEN */
  370.         Gt_SetGadgetAttrsA(g_getpubscreen,execw_window,NIL,[GA_DISABLED,FALSE,TAG_DONE,0])
  371.         /* GETFILE */
  372.         Gt_SetGadgetAttrsA(g_getfile,execw_window,NIL,[GA_DISABLED,FALSE,TAG_DONE,0])
  373.         /* POSX */
  374.         StringF(s_posx,'\d',mya.posx)
  375.         Gt_SetGadgetAttrsA(g_posx,execw_window,NIL,[GA_DISABLED,FALSE,GTST_STRING,s_posx,TAG_DONE,0])
  376.         /* POSY */
  377.         StringF(s_posy,'\d',mya.posy)
  378.         Gt_SetGadgetAttrsA(g_posy,execw_window,NIL,[GA_DISABLED,FALSE,GTST_STRING,s_posy,TAG_DONE,0])
  379.         /* SHOWNAME */
  380.         Gt_SetGadgetAttrsA(g_showname,execw_window,NIL,[GA_DISABLED,FALSE,GTCB_CHECKED,mya.showname,TAG_DONE,0])
  381.         /* POSITION */
  382.         Gt_SetGadgetAttrsA(g_position,execw_window,NIL,[GA_DISABLED,FALSE,TAG_DONE,0])
  383.         /* REM */
  384.         Gt_SetGadgetAttrsA(g_rem,execw_window,NIL,[GA_DISABLED,FALSE,TAG_DONE,0])
  385.         /* SAVE */
  386.         Gt_SetGadgetAttrsA(g_save,execw_window,NIL,[GA_DISABLED,FALSE,TAG_DONE,0])
  387.         /* SAVEAS */
  388.         Gt_SetGadgetAttrsA(g_saveas,execw_window,NIL,[GA_DISABLED,FALSE,TAG_DONE,0])
  389.         /* TESTER */
  390.         Gt_SetGadgetAttrsA(g_test,execw_window,NIL,[GA_DISABLED,FALSE,TAG_DONE,0])
  391.         /* LISTVIEW */
  392.         Gt_SetGadgetAttrsA(g_list,execw_window,NIL,[GA_DISABLED,FALSE,GTLV_SHOWSELECTED,TRUE,GTLV_TOP,numnode,GTLV_SELECTED,numnode,GTLV_LABELS,p_EmptyList(list_appicon),0])
  393.     ELSEIF numnode=-1
  394.         Gt_SetGadgetAttrsA(g_name,execw_window,NIL,[GA_DISABLED,TRUE,GTST_STRING,'',TAG_DONE,0])
  395.         /* EXECTYPE */
  396.         Gt_SetGadgetAttrsA(g_exectype,execw_window,NIL,[GA_DISABLED,TRUE,GTCY_ACTIVE,0,TAG_DONE,0])
  397.         /* COMMAND */
  398.         Gt_SetGadgetAttrsA(g_command,execw_window,NIL,[GA_DISABLED,TRUE,GTST_STRING,'',TAG_DONE,0])
  399.         /* HOTKEY */
  400.         Gt_SetGadgetAttrsA(g_hotkey,execw_window,NIL,[GA_DISABLED,TRUE,GTST_STRING,'',TAG_DONE,0])
  401.         /* STACK  */
  402.         StringF(s_stack,'\d',mya.stack)
  403.         Gt_SetGadgetAttrsA(g_stack,execw_window,NIL,[GA_DISABLED,TRUE,GTST_STRING,'',TAG_DONE,0])
  404.         /* PRI */
  405.         StringF(s_pri,'\d',mya.priority)
  406.         Gt_SetGadgetAttrsA(g_priority,execw_window,NIL,[GA_DISABLED,TRUE,GTST_STRING,'',TAG_DONE,0])
  407.         /* DELAY */
  408.         StringF(s_delay,'\d',mya.delay)
  409.         Gt_SetGadgetAttrsA(g_delay,execw_window,NIL,[GA_DISABLED,TRUE,GTST_STRING,'',TAG_DONE,0])
  410.         /* CURRENTDIR */
  411.         Gt_SetGadgetAttrsA(g_currentdir,execw_window,NIL,[GA_DISABLED,TRUE,GTST_STRING,'',TAG_DONE,0])
  412.         /* PATH */
  413.         Gt_SetGadgetAttrsA(g_path,execw_window,NIL,[GA_DISABLED,TRUE,GTST_STRING,'',TAG_DONE,0])
  414.         /* OUTPUT */
  415.         Gt_SetGadgetAttrsA(g_output,execw_window,NIL,[GA_DISABLED,TRUE,GTST_STRING,'',TAG_DONE,0])
  416.         /* PUBSCREEN */
  417.         Gt_SetGadgetAttrsA(g_pubscreen,execw_window,NIL,[GA_DISABLED,TRUE,GTST_STRING,'',TAG_DONE,0])
  418.         /* ARGUMENTS */
  419.         Gt_SetGadgetAttrsA(g_arguments,execw_window,NIL,[GA_DISABLED,TRUE,GTCB_CHECKED,0,TAG_DONE,0])
  420.         /* TOFRONT */
  421.         Gt_SetGadgetAttrsA(g_tofront,execw_window,NIL,[GA_DISABLED,TRUE,GTCB_CHECKED,0,TAG_DONE,0])
  422.         /* FILE */
  423.         Gt_SetGadgetAttrsA(g_file,execw_window,NIL,[GA_DISABLED,TRUE,GTST_STRING,'',TAG_DONE,0])
  424.         /* POSX */
  425.         StringF(s_posx,'\d',mya.posx)
  426.         Gt_SetGadgetAttrsA(g_posx,execw_window,NIL,[GA_DISABLED,TRUE,GTST_STRING,'',TAG_DONE,0])
  427.         /* POSY */
  428.         StringF(s_posy,'\d',mya.posy)
  429.         Gt_SetGadgetAttrsA(g_posy,execw_window,NIL,[GA_DISABLED,TRUE,GTST_STRING,'',TAG_DONE,0])
  430.         /* SHOWNAME */
  431.         Gt_SetGadgetAttrsA(g_showname,execw_window,NIL,[GA_DISABLED,TRUE,GTCB_CHECKED,0,TAG_DONE,0])
  432.         /* GETCOMMAND */
  433.         Gt_SetGadgetAttrsA(g_getcommand,execw_window,NIL,[GA_DISABLED,TRUE,TAG_DONE,0])
  434.         /* GETCURRENTDIR */
  435.         Gt_SetGadgetAttrsA(g_getcurrentdir,execw_window,NIL,[GA_DISABLED,TRUE,TAG_DONE,0])
  436.         /* GETPATH */
  437.         Gt_SetGadgetAttrsA(g_getpath,execw_window,NIL,[GA_DISABLED,TRUE,TAG_DONE,0])
  438.         /* GETOUTPUT */
  439.         Gt_SetGadgetAttrsA(g_getoutput,execw_window,NIL,[GA_DISABLED,TRUE,TAG_DONE,0])
  440.         /* GETPUBSCREEN */
  441.         Gt_SetGadgetAttrsA(g_getpubscreen,execw_window,NIL,[GA_DISABLED,TRUE,TAG_DONE,0])
  442.         /* GETFILE */
  443.         Gt_SetGadgetAttrsA(g_getfile,execw_window,NIL,[GA_DISABLED,TRUE,TAG_DONE,0])
  444.         /* POSITION */
  445.         Gt_SetGadgetAttrsA(g_position,execw_window,NIL,[GA_DISABLED,TRUE,TAG_DONE,0])
  446.         /* REM */
  447.         Gt_SetGadgetAttrsA(g_rem,execw_window,NIL,[GA_DISABLED,TRUE,TAG_DONE,0])
  448.         /* SAVE */
  449.         Gt_SetGadgetAttrsA(g_save,execw_window,NIL,[GA_DISABLED,TRUE,TAG_DONE,0])
  450.         /* SAVEAS */
  451.         Gt_SetGadgetAttrsA(g_saveas,execw_window,NIL,[GA_DISABLED,TRUE,TAG_DONE,0])
  452.         /* TESTER */
  453.         Gt_SetGadgetAttrsA(g_test,execw_window,NIL,[GA_DISABLED,TRUE,TAG_DONE,0])
  454.         /* LISTVIEW */
  455.         Gt_SetGadgetAttrsA(g_list,execw_window,NIL,[GTLV_SHOWSELECTED,FALSE,GA_DISABLED,TRUE,GTLV_LABELS,list_empty,0])
  456.     ENDIF
  457.     dWriteF(['tm_RebuildGadgets() \d\n'],[numnode])
  458. ENDPROC
  459. PROC tm_FileRequester(titre,flags) /*"tm_FileRequester(titre,flags)"*/
  460.     DEF reqfile:PTR TO rtfilerequester
  461.     DEF buffer[120]:STRING
  462.     DEF ret[256]:STRING
  463.     IF reqfile:=RtAllocRequestA(RT_FILEREQ,NIL)
  464.         buffer[0]:=0
  465.         IF RtFileRequestA(reqfile,buffer,titre,flags)
  466.             AddPart(reqfile.dir,'',256)
  467.             StringF(ret,'\s\s',reqfile.dir,buffer)
  468.         ELSE
  469.             ret:=FALSE
  470.         ENDIF
  471.         IF reqfile THEN RtFreeRequest(reqfile)
  472.     ELSE
  473.         ret:=FALSE
  474.     ENDIF
  475.     dWriteF(['tm_FileRequester() \d\n'],[ret])
  476.     RETURN ret
  477. ENDPROC
  478. PROC tm_LookMessage() /*"tm_LookMessage()"*/
  479.     DEF return_sig
  480.     DEF wndport:PTR TO mp
  481.     DEF ret_close=FALSE
  482.     IF execw_window<>NIL THEN wndport:=execw_window.userport ELSE wndport:=NIL
  483.     dWriteF(['tm_LookMessage() \h \h\n'],[execw_window,wndport])
  484.     return_sig:=Wait(Shl(1,prgport.sigbit) OR Shl(1,wndport.sigbit) OR $F000)
  485.     IF (return_sig AND Shl(1,prgport.sigbit))
  486.         IF execw_window=0 THEN tm_OpenMainWindow()
  487.     ELSEIF (return_sig AND Shl(1,wndport.sigbit))
  488.         ret_close:=tm_LookWinMessage()
  489.         IF ret_close THEN execw_window:=tm_CloseWindow(execw_window)
  490.     ELSEIF (return_sig AND $F000)
  491.         reelquit:=TRUE
  492.     ENDIF
  493. ENDPROC
  494. PROC tm_LookWinMessage() /*"tm_LookWinMessage()"*/
  495.     DEF execw_mes:PTR TO intuimessage
  496.     DEF execw_g:PTR TO gadget
  497.     DEF execw_gstr:PTR TO stringinfo
  498.     DEF c_ic:PTR TO appiconnode
  499.     DEF c_node:PTR TO ln
  500.     DEF code
  501.     DEF piv_str[256]:STRING
  502.     DEF req_str[256]:STRING
  503.     DEF l_r=FALSE
  504.     DEF erreur
  505.     DEF execw_type=0,execw_infos /*,execw_menu*/
  506.     DEF pivcurnode
  507.     dWriteF(['tm_LookWinMessage()\n'],0)
  508.     IF execw_mes:=Gt_GetIMsg(execw_window.userport)
  509.         execw_type:=execw_mes.class
  510.         IF execw_type=IDCMP_MENUPICK
  511.             execw_infos:=execw_mes.code
  512.             SELECT execw_infos
  513.                 CASE $F800
  514.             ENDSELECT
  515.         ELSEIF (execw_type=IDCMP_GADGETDOWN) OR (execw_type=IDCMP_GADGETUP)
  516.             execw_g:=execw_mes.iaddress
  517.             execw_infos:=execw_g.gadgetid
  518.             c_ic:=p_GetAdrNode(list_appicon,currentnode)
  519.             c_node:=c_ic
  520.             code:=execw_mes.code
  521.             SELECT execw_infos
  522.                 CASE GAD_NAME
  523.                     Gt_SetGadgetAttrsA(g_list,execw_window,NIL,[GTLV_SHOWSELECTED,TRUE,GTLV_TOP,0,GTLV_SELECTED,0,GTLV_LABELS,-1,0])
  524.                     execw_gstr:=execw_g.specialinfo
  525.                     StringF(piv_str,'\s',execw_gstr.buffer)
  526.                     IF c_node.name THEN DisposeLink(TrimStr(c_node.name))
  527.                     c_node.name:=String(EstrLen(piv_str))
  528.                     StrCopy(c_node.name,piv_str,ALL)
  529.                     Gt_SetGadgetAttrsA(g_list,execw_window,NIL,[GTLV_SHOWSELECTED,TRUE,GTLV_TOP,currentnode,GTLV_SELECTED,currentnode,GTLV_LABELS,p_EmptyList(list_appicon),0])
  530.                 CASE GAD_EXECTYPE
  531.                     c_ic.exectype:=code
  532.                 CASE GAD_GETCOMMAND
  533.                     IF req_str:=tm_FileRequester('Get Command',[RT_LOCKWINDOW,TRUE,RT_WINDOW,execw_window,TAG_DONE,0])
  534.                         execw_gstr:=execw_g.specialinfo
  535.                         StringF(piv_str,'\s',req_str)
  536.                         IF c_ic.command THEN DisposeLink(TrimStr(c_ic.command))
  537.                         c_ic.command:=String(EstrLen(piv_str))
  538.                         StrCopy(c_ic.command,piv_str,ALL)
  539.                         Gt_SetGadgetAttrsA(g_command,execw_window,NIL,[GTST_STRING,c_ic.command,TAG_DONE,0])
  540.                     ENDIF
  541.                 CASE GAD_COMMAND
  542.                     execw_gstr:=execw_g.specialinfo
  543.                     StringF(piv_str,'\s',execw_gstr.buffer)
  544.                     IF c_ic.command THEN DisposeLink(TrimStr(c_ic.command))
  545.                     c_ic.command:=String(EstrLen(piv_str))
  546.                     StrCopy(c_ic.command,piv_str,ALL)
  547.                 CASE GAD_HOTKEY
  548.                     execw_gstr:=execw_g.specialinfo
  549.                     StringF(piv_str,'\s',execw_gstr.buffer)
  550.                     IF c_ic.hotkey THEN DisposeLink(TrimStr(c_ic.hotkey))
  551.                     c_ic.hotkey:=String(EstrLen(piv_str))
  552.                     StrCopy(c_ic.hotkey,piv_str,ALL)
  553.                 CASE GAD_STACK
  554.                     execw_gstr:=execw_g.specialinfo
  555.                     StringF(piv_str,'\s',execw_gstr.buffer)
  556.                     c_ic.stack:=Val(piv_str,NIL)
  557.                 CASE GAD_PRIORITY
  558.                     execw_gstr:=execw_g.specialinfo
  559.                     StringF(piv_str,'\s',execw_gstr.buffer)
  560.                     c_ic.priority:=Val(piv_str,NIL)
  561.                 CASE GAD_DELAY
  562.                     execw_gstr:=execw_g.specialinfo
  563.                     StringF(piv_str,'\s',execw_gstr.buffer)
  564.                     c_ic.delay:=Val(piv_str,NIL)
  565.                 CASE GAD_GETCURRENTDIR
  566.                     IF req_str:=tm_FileRequester('Get CurrentDir',[RTFI_FLAGS,FREQF_NOFILES,RT_LOCKWINDOW,TRUE,RT_WINDOW,execw_window,TAG_DONE,0])
  567.                         execw_gstr:=execw_g.specialinfo
  568.                         StringF(piv_str,'\s',req_str)
  569.                         IF c_ic.currentdir THEN DisposeLink(TrimStr(c_ic.currentdir))
  570.                         c_ic.currentdir:=String(EstrLen(piv_str))
  571.                         StrCopy(c_ic.currentdir,piv_str,ALL)
  572.                         Gt_SetGadgetAttrsA(g_currentdir,execw_window,NIL,[GTST_STRING,c_ic.currentdir,TAG_DONE,0])
  573.                     ENDIF
  574.                 CASE GAD_CURRENTDIR
  575.                     execw_gstr:=execw_g.specialinfo
  576.                     StringF(piv_str,'\s',execw_gstr.buffer)
  577.                     IF c_ic.currentdir THEN DisposeLink(TrimStr(c_ic.currentdir))
  578.                     c_ic.currentdir:=String(EstrLen(piv_str))
  579.                     StrCopy(c_ic.currentdir,piv_str,ALL)
  580.                 CASE GAD_GETPATH
  581.                     IF req_str:=tm_FileRequester('Get Path',[RTFI_FLAGS,FREQF_NOFILES,RT_LOCKWINDOW,TRUE,RT_WINDOW,execw_window,TAG_DONE,0])
  582.                         execw_gstr:=execw_g.specialinfo
  583.                         StringF(piv_str,'\s',req_str)
  584.                         IF c_ic.path THEN DisposeLink(TrimStr(c_ic.path))
  585.                         c_ic.path:=String(EstrLen(piv_str))
  586.                         StrCopy(c_ic.path,piv_str,ALL)
  587.                         Gt_SetGadgetAttrsA(g_path,execw_window,NIL,[GTST_STRING,c_ic.path,TAG_DONE,0])
  588.                     ENDIF
  589.                 CASE GA_PATH
  590.                     execw_gstr:=execw_g.specialinfo
  591.                     StringF(piv_str,'\s',execw_gstr.buffer)
  592.                     IF c_ic.path THEN DisposeLink(TrimStr(c_ic.path))
  593.                     c_ic.path:=String(EstrLen(piv_str))
  594.                     StrCopy(c_ic.path,piv_str,ALL)
  595.                 CASE GAD_GETOUTPUT
  596.                     IF req_str:=tm_FileRequester('Get OutPut',[RTFI_FLAGS,FREQF_SAVE,RT_LOCKWINDOW,TRUE,RT_WINDOW,execw_window,TAG_DONE,0])
  597.                         execw_gstr:=execw_g.specialinfo
  598.                         StringF(piv_str,'\s',req_str)
  599.                         IF c_ic.output THEN DisposeLink(TrimStr(c_ic.output))
  600.                         c_ic.output:=String(EstrLen(piv_str))
  601.                         StrCopy(c_ic.output,piv_str,ALL)
  602.                         Gt_SetGadgetAttrsA(g_output,execw_window,NIL,[GTST_STRING,c_ic.output,TAG_DONE,0])
  603.                     ENDIF
  604.                 CASE GAD_OUTPUT
  605.                     execw_gstr:=execw_g.specialinfo
  606.                     StringF(piv_str,'\s',execw_gstr.buffer)
  607.                     IF c_ic.output THEN DisposeLink(TrimStr(c_ic.output))
  608.                     c_ic.output:=String(EstrLen(piv_str))
  609.                     StrCopy(c_ic.output,piv_str,ALL)
  610.                 CASE GAD_GETPUBSCREEN
  611.                 CASE GAD_PUBSCREEN
  612.                     execw_gstr:=execw_g.specialinfo
  613.                     StringF(piv_str,'\s',execw_gstr.buffer)
  614.                     IF c_ic.pubscreen THEN DisposeLink(TrimStr(c_ic.pubscreen))
  615.                     c_ic.pubscreen:=String(EstrLen(piv_str))
  616.                     StrCopy(c_ic.pubscreen,piv_str,ALL)
  617.                 CASE GAD_ARGUMENTS
  618.                     IF execw_mes.code=0 THEN c_ic.arguments:=FALSE ELSE c_ic.arguments:=TRUE
  619.                 CASE GAD_TOFRONT
  620.                     IF execw_mes.code=0 THEN c_ic.tofront:=FALSE ELSE c_ic.tofront:=TRUE
  621.                 CASE GAD_ADD
  622.                     Gt_SetGadgetAttrsA(g_list,execw_window,NIL,[GTLV_SHOWSELECTED,TRUE,GTLV_TOP,0,GTLV_SELECTED,0,GTLV_LABELS,-1,0])
  623.                     currentnode:=tm_AddAppIconNode(list_appicon)
  624.                     Gt_SetGadgetAttrsA(g_list,execw_window,NIL,[GTLV_SHOWSELECTED,TRUE,GTLV_TOP,currentnode,GTLV_SELECTED,currentnode,GTLV_LABELS,p_EmptyList(list_appicon),0])
  625.                     tm_RebuildGadgets(currentnode)
  626.                 CASE GAD_REM
  627.                     Gt_SetGadgetAttrsA(g_list,execw_window,NIL,[GTLV_SHOWSELECTED,TRUE,GTLV_TOP,0,GTLV_SELECTED,0,GTLV_LABELS,-1,0])
  628.                     pivcurnode:=currentnode
  629.                     currentnode:=tm_RemAppIconNode(list_appicon,pivcurnode)
  630.                     Gt_SetGadgetAttrsA(g_list,execw_window,NIL,[GTLV_SHOWSELECTED,TRUE,GTLV_TOP,currentnode,GTLV_SELECTED,currentnode,GTLV_LABELS,p_EmptyList(list_appicon),0])
  631.                     IF p_EmptyList(list_appicon)=-1 THEN tm_RebuildGadgets(-1) ELSE tm_RebuildGadgets(currentnode)
  632.                 CASE GAD_FILE
  633.                     execw_gstr:=execw_g.specialinfo
  634.                     StringF(piv_str,'\s',execw_gstr.buffer)
  635.                     IF c_ic.file THEN DisposeLink(TrimStr(c_ic.file))
  636.                     c_ic.file:=String(EstrLen(piv_str))
  637.                     StrCopy(c_ic.file,piv_str,ALL)
  638.                 CASE GAD_GETFILE
  639.                     IF req_str:=tm_FileRequester('Get Image',[RTFI_FLAGS,FREQF_PATGAD,RT_LOCKWINDOW,TRUE,RT_WINDOW,execw_window,TAG_DONE,0])
  640.                         execw_gstr:=execw_g.specialinfo
  641.                         StringF(piv_str,'\s',req_str)
  642.                         IF c_ic.file THEN DisposeLink(TrimStr(c_ic.file))
  643.                         c_ic.file:=String(EstrLen(piv_str))
  644.                         StrCopy(c_ic.file,piv_str,ALL)
  645.                         Gt_SetGadgetAttrsA(g_file,execw_window,NIL,[GTST_STRING,c_ic.file,TAG_DONE,0])
  646.                     ENDIF
  647.                 CASE GAD_POSITION
  648.                     IF execw_mes.code=1
  649.                         IF (winpos:=OpenW(c_ic.posx,c_ic.posy+execw_screen.barheight,100,10,$100,$1002,'Move',execw_screen,1,NIL))=NIL
  650.                             winpos:=OpenW(c_ic.posx,c_ic.posy+execw_screen.barheight,100,10,$100,$1002,'Move',execw_screen,1,NIL)
  651.                         ENDIF
  652.                     ELSEIF execw_mes.code=0
  653.                         c_ic.posy:=winpos.topedge-execw_screen.barheight
  654.                         c_ic.posx:=winpos.leftedge
  655.                         winpos:=tm_CloseWindow(winpos)
  656.                         tm_RebuildGadgets(currentnode)
  657.                     ENDIF
  658.                 CASE GAD_POSX
  659.                     execw_gstr:=execw_g.specialinfo
  660.                     StringF(piv_str,'\s',execw_gstr.buffer)
  661.                     c_ic.posx:=Val(piv_str,NIL)
  662.                 CASE GAD_POSY
  663.                     execw_gstr:=execw_g.specialinfo
  664.                     StringF(piv_str,'\s',execw_gstr.buffer)
  665.                     c_ic.posy:=Val(piv_str,NIL)
  666.                 CASE GAD_SHOWNAME
  667.                     IF execw_mes.code=0 THEN c_ic.showname:=FALSE ELSE c_ic.showname:=TRUE
  668.                 CASE GAD_SAVE
  669.                     tm_SaveBINFile(GAD_SAVE)
  670.                 CASE GAD_SAVEAS
  671.                     tm_SaveBINFile(GAD_SAVEAS)
  672.                 CASE GAD_USE
  673.                     IF req_str:=tm_FileRequester('Load New Config',[RT_LOCKWINDOW,TRUE,RT_WINDOW,execw_window,TAG_DONE,0])
  674.                         Gt_SetGadgetAttrsA(g_list,execw_window,NIL,[GTLV_SHOWSELECTED,TRUE,GTLV_TOP,0,GTLV_SELECTED,0,GTLV_LABELS,-1,0])
  675.                         StringF(piv_str,'\s',req_str)
  676.                         IF tm_GoodFormat(piv_str)
  677.                             tm_CleanAppIconList(list_appicon,LIST_CLEAN)
  678.                             erreur:=tm_ReadBINFile(piv_str)
  679.                             IF erreur=OK_FICHIER
  680.                                 IF tm_h THEN FreeTMHandle(tm_h)
  681.                                 IF tm_h:=AllocTMHandle()
  682.                                     tm_BuildTMObject(list_appicon)
  683.                                 ENDIF
  684.                             ENDIF
  685.                             Gt_SetGadgetAttrsA(g_list,execw_window,NIL,[GTLV_SHOWSELECTED,TRUE,GTLV_TOP,currentnode,GTLV_SELECTED,currentnode,GTLV_LABELS,p_EmptyList(list_appicon),0])
  686.                             IF p_EmptyList(list_appicon)=-1 THEN tm_RebuildGadgets(-1) ELSE tm_RebuildGadgets(currentnode)
  687.                             /*
  688.                             IF p_EmptyList(list_appicon)=-1
  689.                                 currentnode:=-1
  690.                                 tm_RebuildGadgets(-1)
  691.                             ELSE
  692.                                 currentnode:=NIL
  693.                                 tm_RebuildGadgets(currentnode)
  694.                             ENDIF
  695.                             */
  696.                         ENDIF
  697.                     ENDIF
  698.                 CASE GAD_TEST
  699.                     Gt_SetGadgetAttrsA(g_list,execw_window,NIL,[GTLV_SHOWSELECTED,TRUE,GTLV_TOP,0,GTLV_SELECTED,0,GTLV_LABELS,-1,0])
  700.                     IF tm_h THEN FreeTMHandle(tm_h)
  701.                     IF tm_h:=AllocTMHandle()
  702.                         tm_BuildTMObject(list_appicon)
  703.                     ENDIF
  704.                     IF p_EmptyList(list_appicon)=-1 THEN tm_RebuildGadgets(-1) ELSE tm_RebuildGadgets(currentnode)
  705.                     Gt_SetGadgetAttrsA(g_list,execw_window,NIL,[GTLV_SHOWSELECTED,TRUE,GTLV_TOP,currentnode,GTLV_SELECTED,currentnode,GTLV_LABELS,p_EmptyList(list_appicon),0])
  706.                 CASE GAD_QUIT
  707.                     reelquit:=TRUE
  708.                 CASE 31
  709.                     currentnode:=execw_mes.code
  710.                     tm_RebuildGadgets(currentnode)
  711.             ENDSELECT
  712.         ELSEIF execw_type=IDCMP_CLOSEWINDOW
  713.             l_r:=TRUE
  714.         ENDIF
  715.         Gt_ReplyIMsg(execw_mes)
  716.     ENDIF
  717.     RETURN l_r
  718. ENDPROC
  719. PROC tm_SaveBINFile(where) /*"tm_SaveBINFile(where)"*/
  720.     DEF piv_str[256]:STRING
  721.     DEF destin[256]:STRING
  722.     DEF d_h
  723.     DEF node:PTR TO ln
  724.     DEF mappic:PTR TO appiconnode
  725.     SELECT where
  726.         CASE GAD_TEST
  727.             StrCopy(destin,'Env:TMAppIc.Prefs',ALL)
  728.         CASE GAD_SAVE
  729.             StrCopy(destin,'Envarc:TMAppIc.Prefs',ALL)
  730.         CASE GAD_SAVEAS
  731.             IF piv_str:=tm_FileRequester('Save Configuration',NIL)
  732.                 StrCopy(destin,piv_str,ALL)
  733.             ELSE
  734.                 RETURN FALSE
  735.             ENDIF
  736.     ENDSELECT
  737.     IF d_h:=Open(destin,1006)
  738.         Write(d_h,[ID_TMAP]:LONG,4)
  739.         mappic:=list_appicon.head
  740.         WHILE mappic
  741.             node:=mappic
  742.             IF node.succ
  743.                 Write(d_h,[ID_EXEC]:LONG,4)
  744.                 Write(d_h,node.name,EstrLen(node.name))
  745.                 Out(d_h,0)
  746.                 Write(d_h,[ID_MODE]:LONG,4)
  747.                 Write(d_h,[mappic.exectype]:INT,2)
  748.                 Write(d_h,[ID_COMM]:LONG,4)
  749.                 Write(d_h,mappic.command,EstrLen(mappic.command))
  750.                 Out(d_h,0)
  751.                 Write(d_h,[ID_HKEY]:LONG,4)
  752.                 Write(d_h,mappic.hotkey,EstrLen(mappic.hotkey))
  753.                 Out(d_h,0)
  754.                 Write(d_h,[ID_STAK]:LONG,4)
  755.                 Write(d_h,[mappic.stack]:LONG,4)
  756.                 Write(d_h,[ID_PRIO]:LONG,4)
  757.                 Write(d_h,[mappic.priority]:INT,2)
  758.                 Write(d_h,[ID_DELA]:LONG,4)
  759.                 Write(d_h,[mappic.delay]:INT,2)
  760.                 Write(d_h,[ID_CDIR]:LONG,4)
  761.                 Write(d_h,mappic.currentdir,EstrLen(mappic.currentdir))
  762.                 Out(d_h,0)
  763.                 Write(d_h,[ID_PATH]:LONG,4)
  764.                 Write(d_h,mappic.path,EstrLen(mappic.path))
  765.                 Out(d_h,0)
  766.                 Write(d_h,[ID_OUTP]:LONG,4)
  767.                 Write(d_h,mappic.output,EstrLen(mappic.output))
  768.                 Out(d_h,0)
  769.                 Write(d_h,[ID_PSCR]:LONG,4)
  770.                 Write(d_h,mappic.pubscreen,EstrLen(mappic.pubscreen))
  771.                 Out(d_h,0)
  772.                 Write(d_h,[ID_ARGS]:LONG,4)
  773.                 Write(d_h,[mappic.arguments]:CHAR,1)
  774.                 Write(d_h,[ID_TOFR]:LONG,4)
  775.                 Write(d_h,[mappic.tofront]:CHAR,1)
  776.                 Write(d_h,[ID_FILE]:LONG,4)
  777.                 Write(d_h,mappic.file,EstrLen(mappic.file))
  778.                 Out(d_h,0)
  779.                 Write(d_h,[ID_POSX]:LONG,4)
  780.                 Write(d_h,[mappic.posx]:INT,2)
  781.                 Write(d_h,[ID_POSY]:LONG,4)
  782.                 Write(d_h,[mappic.posy]:INT,2)
  783.                 Write(d_h,[ID_SHNA]:LONG,4)
  784.                 Write(d_h,[mappic.showname]:CHAR,1)
  785.             ENDIF
  786.             mappic:=node.succ
  787.         ENDWHILE
  788.         Close(d_h)
  789.     ENDIF
  790.     dWriteF(['tm_SaveBINFile() \d\n'],0)
  791. ENDPROC
  792. PROC tm_Request(bodytext,gadgettext,the_arg) /*"tm_Request(bodytext,gadgettext,the_arg)"*/
  793. /********************************************************************************
  794.  * Para         : text (STRING), gadget (STRING), arg PTR TO LONG
  795.  * Return       : FALSE if cancel selected,else TRUE
  796.  * Description  : PopUp a Requester.
  797.  *******************************************************************************/
  798.     DEF ret
  799.     DEF taglist
  800.     IF execw_window
  801.         taglist:=[RT_WINDOW,execw_window,RT_LOCKWINDOW,TRUE,RTEZ_REQTITLE,title_req,RT_UNDERSCORE,"_",0]
  802.     ELSE
  803.         taglist:=[RTEZ_REQTITLE,title_req,RT_UNDERSCORE,"_",0]
  804.     ENDIF
  805.     ret:=RtEZRequestA(bodytext,gadgettext,0,the_arg,taglist)
  806.     RETURN ret
  807. ENDPROC
  808. PROC main() HANDLE /*"main()"*/
  809.     DEF test_main
  810.     tattr:=['topaz.font',8,0,0]:textattr
  811.     p_DoReadHeader({prg_banner})
  812.     IF (test_main:=tm_OpenLibraries())<>ER_NONE THEN Raise(test_main)
  813.     IF (test_main:=tm_InitAPP())<>ER_NONE THEN Raise(test_main)
  814.     test_main:=tm_ReadBINFile(NIL)
  815.     IF test_main=ER_NOFILE THEN Raise(test_main)
  816.     IF (test_main:=tm_BuildTMObject(list_appicon))<>ER_NONE THEN Raise(test_main)
  817.     REPEAT
  818.         tm_LookMessage()
  819.     UNTIL reelquit=TRUE
  820.     Raise(ER_NONE)
  821. EXCEPT
  822.     SELECT exception
  823.         CASE ER_INTUITIONLIB; WriteF('Intuition.library ?')
  824.         CASE ER_GADTOOLSLIB;  WriteF('GadTools.library ?')
  825.         CASE ER_GRAPHICSLIB;  WriteF('Graphics.library ?')
  826.         CASE ER_REQTOOLSLIB;  WriteF('Reqtools.library ?')
  827.         CASE ER_TOOLMANAGERLIB;  WriteF('ToolManager.library ?')
  828.         CASE ER_WB;           tm_Request('Ecran Workbench introuvable','_Ok',NIL)
  829.         CASE ER_VISUAL;       tm_Request('Erreur Visual.','_Ok',NIL)
  830.         CASE ER_CONTEXT;      tm_Request('Erreur Context.','_Ok',NIL)
  831.         CASE ER_MENU;         tm_Request('Erreur Menu.','_Ok',NIL)
  832.         CASE ER_GADGET;       tm_Request('Erreur Gadget.','_Ok',NIL)
  833.         CASE ER_WINDOW;       tm_Request('Erreur Window.','_Ok',NIL)
  834.         CASE ER_TMHANDLE;     tm_Request('Impposible de créer le handle.','_Ok',NIL)
  835.         CASE ER_LIST;         tm_Request('Erreur Mémoire','_Ok',NIL)
  836.         CASE ER_EXECOBJ;      tm_Request('Erreur de création d\aun objet Exec.','_Ok',NIL)
  837.         CASE ER_IMAGEOBJ;     tm_Request('Erreur de création d\aun objet Image.','_Ok',NIL)
  838.         CASE ER_ICONOBJ;      tm_Request('Erreur de création d\aun objet Icon.','_Ok',NIL)
  839.         CASE ER_PORT;         tm_Request('Création du port impossible','_Ok',NIL)
  840.         CASE ER_SIG;          tm_Request('Allocation du signal impossible','_Ok',NIL)
  841.         CASE ER_NOFILE;
  842.         CASE ER_APPITEM;
  843.         DEFAULT;              NOP
  844.     ENDSELECT
  845.     tm_RemAPP()
  846.     tm_CloseLibraries()
  847. ENDPROC
  848. prg_banner:
  849. INCBIN 'TMAppIc.header'
  850.  
  851.  
  852.